iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0
AI Engineering

從零打造 RAG 系統:檢索、生成與落地全紀錄系列 第 15 篇

[Day 15] 基礎檢索實作:Top-K 檢索與問題

  • 分享至 

  • xImage
  •  

前言

昨天完成了第一個能查詢的向量資料庫,今天要更仔細地檢視「Top-K 向量檢索」這個最基礎的做法,看看它實際上有哪些侷限,作為接下來一週檢索優化系列的開場。

什麼是 Top-K 檢索?

顧名思義,就是每次查詢固定取回「相似度最高的 K 筆」結果。這是最簡單、也是最多 RAG 教學範例採用的做法:

results = search_similar_chunks(question, top_k=5)

Top-K 檢索常見的幾個問題

1. K 值不好選

  • K 太小:可能漏掉真正相關但排名稍後的內容,尤其當答案分散在多個段落時
  • K 太大:混入不相關內容,稀釋 Prompt 中的訊噪比,甚至可能讓 LLM 誤把不相關內容當作依據

而且 K 值往往是「一刀切」的固定值,不會因為問題的複雜度而調整——簡單的事實查詢可能 1-2 筆就夠了,複雜的比較型問題可能需要 5-10 筆,但固定 K 值無法區分這種差異。

2. 只看語意相似度,不看「是否真的能回答問題」

向量相似度衡量的是「語意接近程度」,但語意接近不等於「包含答案」。例如問題是「A 產品跟 B 產品哪個比較貴?」,向量檢索可能會找到「談論產品價格」的段落,但不一定同時包含 A 和 B 兩者的價格資訊。

3. 忽略關鍵字的精確匹配

向量搜尋擅長抓語意相近的內容,但對於「精確的專有名詞、代號、數字」反而不一定敏感。例如使用者問「錯誤代碼 E1024 是什麼意思」,向量搜尋可能因為語意相似度計算,把「錯誤代碼 E1025」的說明也排到很前面,而真正該優先匹配的精確字串「E1024」卻沒有被特別看重。

4. 沒有考慮上下文連貫性

如果答案剛好橫跨兩個相鄰的 chunk(例如在 Chunking 邊界被切開),單純的 Top-K 檢索可能只取回其中一個 chunk,導致資訊不完整。

這些問題的解法方向(後續幾天會展開)

問題 對應的解法 對應章節
精確關鍵字匹配不足 Hybrid Search(向量 + 關鍵字搜尋) Day 16
語意相似 ≠ 真正相關 Rerank(用更精細的模型重新排序) Day 17
K 值難以固定 Query 改寫、動態調整策略 Day 18
上下文被切斷 取回相鄰 chunk、調整 Overlap Day 6-7 已討論、Day 20 延伸

小結

Top-K 向量檢索是一個很好的起點,但直接拿基礎版本上線,很容易在實際使用中遇到「檢索結果不夠精準」的抱怨。理解它的侷限,才知道接下來的優化手段(Hybrid Search、Rerank、Query 改寫)分別在解決什麼問題,而不是每個技巧都盲目疊加上去。明天我們就從 Hybrid Search 開始,補上關鍵字精確匹配的能力。


上一篇
[Day 14] 動手實作:建立第一個可查詢的向量資料庫
系列文
從零打造 RAG 系統:檢索、生成與落地全紀錄 共 15 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言